Tato otázka již má odpovědi zde: Express js - nelze přesměrovat (4 odpovědi) Uzavřeno před 7 lety. Používám passportjs s middlewarem níže. Předpokládá se kontrola, zda se uživatel přihlašuje, když požaduje určité věci. Pokud není přihlášen, měl by být přesměrován na přihlašovací stránku. Mám trasu požadavku takto: app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update); Tato trasa bude volána, když se uživatel pokusí na webu aktualizovat prostředek s názvem Fantasy Team auth.requiresLogin je následující middleware: exports.requiresLogin = funkce (požadavek, res, další) { if (req.isAuthenticated ()) { návrat next () } vrátit res.redirect ("/ přihlášení"); }; Po přihlášení uživatele jsem simuloval ukončení relace odstraněním cookie relace. Poté jsem prostřednictvím webu odeslal požadavek PUT '/ fantasyteams / 123' na aktualizaci fantasy týmu číslo 123. fantasyteams.update je jednoduše operace uložení mongodb / mongoose: exports.update = funkce (požadavek, res) { var fantasyteam = požadavek fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (funkce (chyba) { res.jsonp (fantasyteam); }); }; Jak se dalo očekávat, obslužná rutina trasy (app.put ...) výše zachytila požadavek, předejte jej middlewaru auth.requiresLogin a zkontrolujte, zda je uživatel přihlášen. Takže se ukázalo, že uživatel není přihlášen, protože jsem smazal jeho cookie relace. res.redirect se volá podle očekávání. Web však nepřesměrovává na přihlašovací stránku. Vidím to v protokolech příkazů node.js: PUT / přihlášení 404 328ms Co jsem udělal špatně?
2021-02-25 08:20:26
Vypadá to, že problém je v tom, že nemáte obslužnou rutinu trasy pro PUT / přihlášení. Původní požadavek byl put, takže při přesměrování je stále součástí stejného požadavku „put“ z prohlížeče. Stačí přidat obslužný program pro put / post / cokoli s app.all ('/ signin') 3 | Toto není odpověď, kterou hledáte? Projděte si další otázky označené soubory cookie relace node.js, které vyjadřují passport.js, nebo položte vlastní otázku.